{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 载入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_url = (\"http://archive.ics.uci.edu/ml/machine-\"\n",
    "              \"learning-databases/abalone/abalone.data\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>Length</th>\n",
       "      <th>Diameter</th>\n",
       "      <th>Height</th>\n",
       "      <th>Whole weight</th>\n",
       "      <th>Shucked weight</th>\n",
       "      <th>Viscera weight</th>\n",
       "      <th>Shell weight</th>\n",
       "      <th>Rings</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M</td>\n",
       "      <td>0.455</td>\n",
       "      <td>0.365</td>\n",
       "      <td>0.095</td>\n",
       "      <td>0.5140</td>\n",
       "      <td>0.2245</td>\n",
       "      <td>0.1010</td>\n",
       "      <td>0.150</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M</td>\n",
       "      <td>0.350</td>\n",
       "      <td>0.265</td>\n",
       "      <td>0.090</td>\n",
       "      <td>0.2255</td>\n",
       "      <td>0.0995</td>\n",
       "      <td>0.0485</td>\n",
       "      <td>0.070</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>F</td>\n",
       "      <td>0.530</td>\n",
       "      <td>0.420</td>\n",
       "      <td>0.135</td>\n",
       "      <td>0.6770</td>\n",
       "      <td>0.2565</td>\n",
       "      <td>0.1415</td>\n",
       "      <td>0.210</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M</td>\n",
       "      <td>0.440</td>\n",
       "      <td>0.365</td>\n",
       "      <td>0.125</td>\n",
       "      <td>0.5160</td>\n",
       "      <td>0.2155</td>\n",
       "      <td>0.1140</td>\n",
       "      <td>0.155</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>I</td>\n",
       "      <td>0.330</td>\n",
       "      <td>0.255</td>\n",
       "      <td>0.080</td>\n",
       "      <td>0.2050</td>\n",
       "      <td>0.0895</td>\n",
       "      <td>0.0395</td>\n",
       "      <td>0.055</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Sex  Length  Diameter  Height  Whole weight  Shucked weight  Viscera weight  \\\n",
       "0   M   0.455     0.365   0.095        0.5140          0.2245          0.1010   \n",
       "1   M   0.350     0.265   0.090        0.2255          0.0995          0.0485   \n",
       "2   F   0.530     0.420   0.135        0.6770          0.2565          0.1415   \n",
       "3   M   0.440     0.365   0.125        0.5160          0.2155          0.1140   \n",
       "4   I   0.330     0.255   0.080        0.2050          0.0895          0.0395   \n",
       "\n",
       "   Shell weight  Rings  \n",
       "0         0.150     15  \n",
       "1         0.070      7  \n",
       "2         0.210      9  \n",
       "3         0.155     10  \n",
       "4         0.055      7  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns_mapping = {\n",
    "    'Sex': '性别', \n",
    "    'Length': '长度', \n",
    "    'Diameter': '直径', \n",
    "    'Height': '高度', \n",
    "    'Whole weight': '整体重量',             \n",
    "    'Shucked weight': '去壳后重量', \n",
    "    'Viscera weight': '脏器重量', \n",
    "    'Shell weight': '壳的重量',             \n",
    "    'Rings': '环数'  # 目标变量\n",
    "}\n",
    "\n",
    "try:\n",
    "    df_abalone = pd.read_csv(\"../../data/abalone.csv\", header=0)\n",
    "except Exception as e:\n",
    "    print(e)\n",
    "    df_abalone = pd.read_csv(target_url, header=None, prefix=\"V\")\n",
    "    df_abalone.columns = columns_mapping.keys()\n",
    "    df_abalone.to_csv(\"../../data/abalone.csv\", index=False)\n",
    "\n",
    "df_abalone.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of Rows:  4177\n",
      "Number of Cols(含目标值): 9\n"
     ]
    }
   ],
   "source": [
    "nrows, ncols = df_abalone.shape\n",
    "print(\"Number of Rows: \", nrows)\n",
    "print(\"Number of Cols(含目标值):\", ncols)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 计算鲍鱼数据的相关性\n",
    "和岩石vs水雷数据（分类问题）的不同之处是，鲍鱼数据的目标值是连续（回归问题）的，可以将目标值一起计算相关系数与绘图。  \n",
    "属性与属性之间高相关，可能存在多重共线性，是个问题   \n",
    "属性与目标值之间高相关，表示属性对目标值的预测性较强，是好事  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Length</th>\n",
       "      <th>Diameter</th>\n",
       "      <th>Height</th>\n",
       "      <th>Whole weight</th>\n",
       "      <th>Shucked weight</th>\n",
       "      <th>Viscera weight</th>\n",
       "      <th>Shell weight</th>\n",
       "      <th>Rings</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Length</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.986812</td>\n",
       "      <td>0.827554</td>\n",
       "      <td>0.925261</td>\n",
       "      <td>0.897914</td>\n",
       "      <td>0.903018</td>\n",
       "      <td>0.897706</td>\n",
       "      <td>0.556720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Diameter</th>\n",
       "      <td>0.986812</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.833684</td>\n",
       "      <td>0.925452</td>\n",
       "      <td>0.893162</td>\n",
       "      <td>0.899724</td>\n",
       "      <td>0.905330</td>\n",
       "      <td>0.574660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Height</th>\n",
       "      <td>0.827554</td>\n",
       "      <td>0.833684</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.819221</td>\n",
       "      <td>0.774972</td>\n",
       "      <td>0.798319</td>\n",
       "      <td>0.817338</td>\n",
       "      <td>0.557467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Whole weight</th>\n",
       "      <td>0.925261</td>\n",
       "      <td>0.925452</td>\n",
       "      <td>0.819221</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.969405</td>\n",
       "      <td>0.966375</td>\n",
       "      <td>0.955355</td>\n",
       "      <td>0.540390</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Shucked weight</th>\n",
       "      <td>0.897914</td>\n",
       "      <td>0.893162</td>\n",
       "      <td>0.774972</td>\n",
       "      <td>0.969405</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.931961</td>\n",
       "      <td>0.882617</td>\n",
       "      <td>0.420884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Viscera weight</th>\n",
       "      <td>0.903018</td>\n",
       "      <td>0.899724</td>\n",
       "      <td>0.798319</td>\n",
       "      <td>0.966375</td>\n",
       "      <td>0.931961</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.907656</td>\n",
       "      <td>0.503819</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Shell weight</th>\n",
       "      <td>0.897706</td>\n",
       "      <td>0.905330</td>\n",
       "      <td>0.817338</td>\n",
       "      <td>0.955355</td>\n",
       "      <td>0.882617</td>\n",
       "      <td>0.907656</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.627574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rings</th>\n",
       "      <td>0.556720</td>\n",
       "      <td>0.574660</td>\n",
       "      <td>0.557467</td>\n",
       "      <td>0.540390</td>\n",
       "      <td>0.420884</td>\n",
       "      <td>0.503819</td>\n",
       "      <td>0.627574</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Length  Diameter    Height  Whole weight  Shucked weight  \\\n",
       "Length          1.000000  0.986812  0.827554      0.925261        0.897914   \n",
       "Diameter        0.986812  1.000000  0.833684      0.925452        0.893162   \n",
       "Height          0.827554  0.833684  1.000000      0.819221        0.774972   \n",
       "Whole weight    0.925261  0.925452  0.819221      1.000000        0.969405   \n",
       "Shucked weight  0.897914  0.893162  0.774972      0.969405        1.000000   \n",
       "Viscera weight  0.903018  0.899724  0.798319      0.966375        0.931961   \n",
       "Shell weight    0.897706  0.905330  0.817338      0.955355        0.882617   \n",
       "Rings           0.556720  0.574660  0.557467      0.540390        0.420884   \n",
       "\n",
       "                Viscera weight  Shell weight     Rings  \n",
       "Length                0.903018      0.897706  0.556720  \n",
       "Diameter              0.899724      0.905330  0.574660  \n",
       "Height                0.798319      0.817338  0.557467  \n",
       "Whole weight          0.966375      0.955355  0.540390  \n",
       "Shucked weight        0.931961      0.882617  0.420884  \n",
       "Viscera weight        1.000000      0.907656  0.503819  \n",
       "Shell weight          0.907656      1.000000  0.627574  \n",
       "Rings                 0.503819      0.627574  1.000000  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 自动忽略的字符串型变量\n",
    "df_abalone_corr_matrix = df_abalone.corr()\n",
    "df_abalone_corr_matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘制鲍鱼数据的相关性热力图\n",
    "和岩石vs水雷数据（分类问题）的不同之处是，鲍鱼数据的目标值是连续（回归问题）的，可以将目标值一起计算相关系数与绘图。  \n",
    "属性与属性之间高相关，可能存在多重共线性，是个问题   \n",
    "属性与目标值之间高相关，表示属性对目标值的预测性较强，是好事  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16, 8))\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "pic = ax.pcolor(df_abalone_corr_matrix) #, cmap=plt.cm.RdBu)\n",
    "# ax.set_xticklabels(df_abalone_corr_matrix.columns)\n",
    "# ax.set_yticklabels(df_abalone_corr_matrix.columns)\n",
    "fig.colorbar(pic, ax=ax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
